ci: per-app build matrix with precise path triggers#1112
Open
msluszniak wants to merge 10 commits intomainfrom
Open
ci: per-app build matrix with precise path triggers#1112msluszniak wants to merge 10 commits intomainfrom
msluszniak wants to merge 10 commits intomainfrom
Conversation
Replaces the LLM-only Android/iOS build workflows with one matrix-based workflow per platform that gates each app's build on `dorny/paths-filter`. Adds coverage for computer-vision, speech, text-embeddings, and bare-rn demos, plus a Jest smoke test for bare-rn. Skips builds on draft PRs and fires on ready_for_review so flipping a draft to ready triggers CI. Closes #963.
msluszniak
commented
Apr 29, 2026
| computer-vision: | ||
| - *expo-shared | ||
| - packages/react-native-executorch/common/rnexecutorch/models/VisionModel.{cpp,h} | ||
| - packages/react-native-executorch/common/rnexecutorch/models/{classification,instance_segmentation,object_detection,ocr,semantic_segmentation,style_transfer,text_to_image,vertical_ocr}/** |
Member
Author
There was a problem hiding this comment.
these and speech models should be gathered is a separate PR to separate subdirs to exclude this too long inclusion lines.
… hash - bundle job now runs `yarn prepare` before bundling bare-rn so react-native-executorch-bare-resource-fetcher's lib/ exists for metro (Expo apps don't need it; expo export resolves workspace deps directly). - iOS composite caches CocoaPods recipes + installed Pods keyed by Podfile.lock, saving ~3-5 min per cell on cache hits. - compute-app-hash.js excludes .github/workflows/build-apps.yml from the content hash. Workflow edits still trigger the matrix, but each cell hits its existing marker and skips. Build-behavior workflow edits (with:, runs-on:, env:) need a manual cache clear via the UI.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Replaces the LLM-only Android/iOS build workflows with one matrix-based
build-apps.yml, gated bydorny/paths-filterso each app/platform cell runs only when its code or shared infrastructure changes. Three parallel matrices per push: a Metro JS bundle (production mode, catches missing imports and transform errors before any native build), Android native build, iOS native build. Cells skip in ~30s via content-hash cache markers when their relevant files haven't changed since the last passing run. A lint-time drift check fails PRs that introduce source files not covered by any per-app filter. Adds a Jest smoke test for bare-rn. Skips all build workflows on draft PRs; fires onready_for_review.Introduces a breaking change?
Type of change
Tested on
Testing instructions
Example apps build checkruns; the matrix contains only the apps whose paths actually changed.apps/computer-vision/**— onlycomputer-visioncells run (Android + iOS + bundle).packages/react-native-executorch/android/**— only Android native cells run; iOS and bundle skip.App.tsx— the bundle cell for that app fails fast before any native build finishes.packages/react-native-executorch/not matched by any filter —Check CI filter coveragein thelintjob fails and lists the uncovered path.Related issues
Closes #963.
Checklist
Additional notes
Composite actions in
.github/actions/build-{android,ios}-app/carry the build steps; iOS auto-detects workspace and scheme. Beyond #963:scripts/compute-app-hash.js) skip unchanged cells in ~30s; workflow file excluded so orchestration edits don't cascade-invalidate.scripts/check-ci-filter-coverage.js) wired intoci.ymllint fails PRs that introduce uncovered source files.paths-ignorefor docs inci.yml,apps/bare-rn/__mocks__/for the Jest test,generic/platform=iOS Simulatorto avoid flaky simulator lookups.